package infbmobile.comunicaciones;

import infbmobile.errores.MovilException;
import infbmobile.main.InfBMobile;
import infbmobile.util.UIHerramientas;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import java.util.*;
import javax.microedition.rms.RecordStore;

public class CitasMovil {

    private InfBMobile midlet;
    private int longitudLista;
    private Vector listaFechas = new Vector();
    private Vector listaHoras = new Vector();
    private String dni;
    private String tarjetaSanitaria;
    private String password;

    public CitasMovil(InfBMobile midlet) {
        this.midlet=midlet;
    }

    public Vector getListaFechas() {
        return listaFechas;
    }

    public Vector getListaHoras() {
        return listaHoras;
    }

    public int getLongitudLista() {
        return longitudLista;
    }

    public void connectar() {
        HttpConnection conexion = null;
        InputStream entrada = null;
        OutputStream salida = null;
        String fecha, hora;



        try {
            String miUrl = "http://" + midlet.servidorWeb + ":" + midlet.puerto + "/GestionHospitalaria/CitasServlet";
            try {
                conexion = (HttpConnection) Connector.open(miUrl);
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            conexion.setRequestProperty("Content-Language", "es-ES");
            conexion.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.0");
            conexion.setRequestProperty("Connection", "close");
            conexion.setRequestMethod(HttpConnection.GET);
            salida = conexion.openOutputStream();
            DataOutputStream out = new DataOutputStream(salida);
            try {
                RecordStore rms = RecordStore.openRecordStore("identificacion", true);
                // Creacion de las variables necesarias
                byte[] byteInputData = new byte[50];
                ByteArrayInputStream inputStream;
                DataInputStream inputDataStream;
                inputStream = new ByteArrayInputStream(byteInputData);
                inputDataStream = new DataInputStream(inputStream);
                // Comprobamos si el recordstore tenia ya almacenados algunos parametros
                // para poder cargar
                boolean resultado;
                if (rms.getNumRecords() > 0) {
                    rms.getRecord(1, byteInputData, 0);
                    dni = inputDataStream.readUTF();
                    tarjetaSanitaria = inputDataStream.readUTF();
                    password = inputDataStream.readUTF();
                }
            } catch (Exception e) {

                throw new MovilException("Error: Se produjo un error en el metodo de carga (Identificacion.cargar) de los parametros de identificacion del paciente => " + e.getMessage());
            }
            /*if (tarjetaSanitaria==null){
            UIHerramientas.mostrarAviso("Error","No se ha Guardado ninguna Tarjeta Sanitaria en el RMS");
            }*/
            if (tarjetaSanitaria == null) {
                UIHerramientas.mostrarAviso("Error", "El numero de la tarjeta Sanitaria no esta guardado en el RMS");
            } else {
                out.writeUTF(tarjetaSanitaria);

                entrada = conexion.openInputStream();
                if (conexion.getResponseCode() == HttpConnection.HTTP_OK) {
                    DataInputStream in = new DataInputStream(entrada);
                    longitudLista = in.read();

                    for (int i = 0; i < longitudLista; i++) {

                        fecha = in.readUTF();
                        hora = in.readUTF();
                        listaFechas.addElement(fecha);
                        listaHoras.addElement(hora);


                    }
                    in.close();
                }
                entrada.close();
                conexion.close();
            }

        } catch (IOException ex) {
        }




    }
}

